home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
001-025
/
disk_005
/
samplefont
/
samplefont.asm
Wrap
Assembly Source File
|
1992-05-06
|
7KB
|
183 lines
*
* DISCLAIMER:
*
* This program is provided as a service to the programmer
* community to demonstrate one or more features of the Amiga
* personal computer. These code samples may be freely used
* for commercial or noncommercial purposes.
*
* Commodore Electronics, Ltd ("Commodore") makes no
* warranties, either expressed or implied, with respect
* to the program described herein, its quality, performance,
* merchantability, or fitness for any particular purpose.
* This program is provided "as is" and the entire risk
* as to its quality and performance is with the user.
* Should the program prove defective following its
* purchase, the user (and not the creator of the program,
* Commodore, their distributors or their retailers)
* assumes the entire cost of all necessary damages. In
* no event will Commodore be liable for direct, indirect,
* incidental or consequential damages resulting from any
* defect in the program even if it has been advised of the
* possibility of such damages. Some laws do not allow
* the exclusion or limitation of implied warranties or
* liabilities for incidental or consequential damages,
* so the above limitation or exclusion may not apply.
*
* samplefont.asm
*
*
*
* A complete sample font. To test this font, the following must be done:
*
* 1. In the AmigaDOS SYS:fonts directory, install a file by the name of
* test.font, containing 264 bytes.
*
* The first two bytes must contain the value hex 0f00, the
* identifier for a font header.
*
* The next word (2 bytes), should contain the value 0001,
* which is the number of FontContents elements. There is
* only going to be one font in the directory that this
* font description covers.
*
* Follow this header material with the ascii value for
* 'test/8'; the next 250 bytes should be set to zero.
* This represents the pathname for AmigaDOS to follow
* from the directory SYS:fonts in order to reach this test font.
* 'test' is the directory it should go to and '8' is the font
* file itself, as assembled and linked below.
*
* The next two bytes (as one word) contain the font YSize, in
* this case 0008.
*
* The next byte contains the font Flags, in this case 00.
*
* The last byte contains the font characteristics, in this
* case hex 60, this says it is a disk-based font (bit 1 set)
* and the font has been removed (bit 7 set) saying that the
* font is not currently resident.
*
* Summary (all in hex) of test.font file:
*
* 0f00 0001 test/8 ........ 0008 00 60
* word word 256-bytes...... word byte byte
*
* 2. Create a directory named 'test' in SYS:fonts.
*
* Copy the file created by assembling and linking the test font
* below into a file named '8' in subdirectory SYS:fonts/test.
*
* Use the font under the Notepad program or any other. It
* defines ascii characters 'a' 'b' 'c' and 'd' only. All
* other characters print an "unknown character", a rectangle.
*
* author: Rob Peck 12/1/85
*
* This code may be freely utilized to create programs for the Amiga
*
*------ Included Files -----------------------------------------------
INCLUDE "exec/types.i"
INCLUDE "exec/nodes.i"
INCLUDE "libraries/diskfont.i"
MOVEQ #0,D0 ;provide an easy exit in case somebody
;tries to RUN this file instead of loading it.
RTS
DC.L 0 ; ln_Succ
DC.L 0 ; ln_Pred
DC.B NT_FONT ; ln_Type
DC.B 0 ; ln_Pri
DC.L fontName ; ln_Name
DC.W DFH_ID ; FileID
DC.W 1 ; Revision
DC.L 0 ; Segment
fontName:
DS.B MAXFONTNAME ; Name
font:
DC.L 0 ; ln_Succ
DC.L 0 ; ln_Pred
DC.B NT_FONT ; ln_Type
DC.B 0 ; ln_Pri
DC.L fontName ; ln_Name
DC.L 0 ; mn_ReplyPort
DC.W fontEnd-font ; mn_Length
DC.W 8 ; tf_YSize
DC.B 0 ; tf_Style
DC.B FPF_DESIGNED+FPF_PROPORTIONAL ; tf_Flags
DC.W 14 ; tf_XSize
DC.W 6 ; tf_Baseline
* baseline must be no greater a value than YSize-1, otherwise algorithmically
* generated style (italic particularly) can corrupt system memory.
DC.W 1 ; tf_BoldSmear
DC.W 0 ; tf_Accessors
DC.B 97 ; tf_LoChar
DC.B 100 ; tf_HiChar
DC.L fontData ; tf_CharData
DC.W 8 ; tf_Modulo, no of bytes to add to
; data pointer to go from one row of
; a character to the next row of it.
DC.L fontLoc ; tf_CharLoc, bit position in the
; font data at which the character
; begins.
DC.L fontSpace ; tf_CharSpace
DC.L fontKern ; tf_CharKern
*******************************************************************
* These are the suits-characters that this font data defines.
* ascii lower case a,b,c,d. The font descriptor says that there
* are 4 characters described here. The fifth character in the
* table is the character that is to be output when there is
* no character in this character set that matches the ascii
* value requested.
*
* 97 98 99 100 256
*< >< >< >< >< >
* @@@ @@@ @ @ @@@ @@@@@@@@@@@@
* @@@@@ @@@@@ @@@@@ @@@ @@@@@ @@ @@
* @@@@@@@@@ @@@@@@@@@ @@@@@ @@ @ @@ @@ @@
* @@@@@@@ @@@@@@@@@@@ @@@@@@@ @@@@@@@@@@@ @@ @@
* @@@@@ @@@ @ @@@ @@@@@ @@ @ @@ @@ @@
* @@@ @ @@@ @ @@ @@
* @ @@@@@ @ @@@@@ @@@@@@@@@@@@
*
*******************************************************************
fontData:
DC.W $071C0,$08040,$070FF,$0F000
DC.W $0FBE3,$0E0E0,$0F8C0,$03000
DC.W $07FCF,$0F9F3,$026C0,$03000
DC.W $03F9F,$0FFFF,$0FFC0,$03000
DC.W $01F0E,$0B9F3,$026C0,$03000
DC.W $00E00,$080E0,$020C0,$03000
DC.W $00403,$0E040,$0F8FF,$0F000
DC.W $00000,$00000,$00000,$00000
DC.W $00000,$00000,$00000,$00000
* font data is bit-packed edge to edge to save space; thats what the
* fontLoc is all about.
fontLoc:
DC.L $00000000B,$0000B000B,$000160007,$0001D000B
DC.L $00028000C
* Each pair of words specifies how the characters are bit-packed. For
* example, the first character starts at bit position 0000, and is 000B
* (11) bits wide. The second character starts at bit position 000B and
* is 000B bits wide, and so on. Tells font handler how to unpack the
* bits from the array.
fontSpace:
DC.W 000012,000012,000008,000012,000013
* fontSpace array: Use a space that is this-wide to contain this character
* when it is printed.
fontKern:
DC.W 000001,000001,000001,000001,000001
fontEnd:
END